<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
    // 《一. 》
    // 定义：
    // Proxy 对象用于创建一个对象的代理，从而实现基本操作的拦截和自定义（如属性查找、赋值、枚举、函数调用等）。
    // 语法：
    // const p = new Proxy(globalTarget, handler)
    // 参数：
    // globalTarget：要使用 Proxy 包装的目标对象（可以是任何类型的对象，包括原生数组，函数，甚至另一个代理）。
    // handler：一个通常【以函数作为属性的对象】，各属性中的函数分别定义了在执行各种操作时代理 p 的行为。
    // handler对象的方法：
    // handler 对象是一个容纳一批特定属性的占位符对象。它包含有 Proxy 的各个捕获器（trap）。
    // 所有的捕捉器是可选的。如果没有定义某个捕捉器，那么就会保留源对象的默认行为。

    // 实例：创建代理对象并拦截属性读取操作
    // const girl = {
    //     name: '周雨薇'
    // }
    //
    // const girlProxy = new Proxy(girl,{
    //     get(globalTarget, p, receiver) {
    //         console.log('已拦截girl的读取属性操作')
    //         return p in globalTarget ? globalTarget[p] : '无此属性'
    //     },
    //     has(globalTarget, p) {
    //         console.log('已拦截对girl的in操作')
    //         return p in globalTarget
    //     }
    // })
    //
    // console.log(girlProxy.age)
    // console.log('name' in girlProxy)
</script>
</html>
